home *** CD-ROM | disk | FTP | other *** search
/ CD Classic / CD CLASSIC #1.iso / mlink / dir2dr1.c < prev    next >
C/C++ Source or Header  |  1991-12-29  |  5KB  |  185 lines

  1. #include "io.h"
  2. #include "stdio.h"
  3. #include "fcntl.h"
  4. #include "string.h"
  5. #include "memory.h"
  6. #include "sys\types.h"
  7.  
  8. #define S_IFMT          0170000         /* file type mask */
  9. #define S_IFDIR         0040000         /* directory */
  10. #define S_IFCHR         0020000         /* character special */
  11. #define S_IFREG         0100000         /* regular */
  12. #define S_IREAD         0000400         /* read permission, owner */
  13. #define S_IWRITE        0000200         /* write permission, owner */
  14. #define S_IEXEC         0000100         /* execute/search permission, owner */
  15.  
  16. #define FILENAME           13
  17. #define TITLE              27
  18. #define PORTSTR            15
  19. #define TIMESTR            10
  20. #define PHONE              26
  21. #define INITSTR            26
  22. #define PROFILE            20
  23. #define LISTSTR            20
  24. #define MAXBUFF            128
  25. #define MINBUFF            32
  26. #define RECBUFLEN          4096
  27. #define XMITBUFLEN         4096
  28.  
  29. typedef struct tagSESSION
  30. {
  31.     char      szTitle[TITLE];
  32.     char      szPhone[PHONE];
  33.     int       iProtocol;
  34.     char      szScript[FILENAME];
  35.     int       bSessRsvd[10];
  36. } SESSION;
  37.  
  38. typedef struct tagPORT
  39. {
  40.     int       iComPort;
  41.     int       iBaudRate;
  42.     int       iFlowCtl;
  43.     int       iParity;
  44.     int       iDataBits;
  45.     int       iStopBits;
  46.     int       bCarrier;
  47.     int       bLockBaud;
  48.     int       iParityCheck;
  49.     int       bPortRsvd[10];
  50. } PORT;
  51.  
  52. typedef struct tagTERMINAL
  53. {
  54.     int       iTerminal;
  55.     int       iFontSize;
  56.     int       iCaret;
  57.     int       iBufLines;
  58.     int       iRows;
  59.     int       iCols;
  60.     long      crFore;
  61.     long      crBack;
  62.     int       bCRLF;
  63.     int       bAutoWrap;
  64.     int       bEcho;
  65.     int       bColors;
  66.     char      szFont[LISTSTR];
  67.     int       bTermRsvd[10];
  68. } TERMINAL;
  69.  
  70. typedef struct tagZMODEMOPT
  71. {
  72.     int    bAutoDown;
  73.     int    bUseCRC32;
  74.     int    bResume;
  75.     int    iSendMgtOpt;
  76.     int    iRecvMgtOpt;
  77. } ZMODEMOPT;
  78.  
  79. typedef struct tagDIR
  80. {
  81.     SESSION     Session;
  82.     PORT        Port;
  83.     TERMINAL    Terminal;
  84.     ZMODEMOPT   ZModemOpt;
  85. } DIR;
  86.  
  87. typedef struct OLDDIR
  88. {
  89.         char  szDirectoryName[30];
  90.         char  szPhoneNumber[20];
  91.         char  szAutoScript[80];
  92.         int   iTerminal;
  93.         int   iTransfer;
  94.         int   iEcho;
  95.         int   iCrLf;
  96.         int   iMaxSize;
  97.         int   iMaxChar;
  98.         int   iModemType;
  99.         int   iAutoAnswer;
  100.         int   iFlowCtl;
  101.         int   iComPort;
  102.         int   iBaudRate;
  103.         int   iParity;
  104.         int   iDataBits;
  105.         int   iStopBits;
  106.         int   iCarrierDetect;
  107.         int   iExtra2;
  108.         int   iExtra3;
  109. } OLDDIR;
  110.  
  111.  
  112. main (int argc, char *argv[])
  113. {
  114.    int i;
  115.    DIR Dir;
  116.    int hDest;
  117.    int hSource;
  118.    OLDDIR OldDir;
  119.    char szSource[30];
  120.    char szDest[30];
  121.  
  122.    if (argc < 3)
  123.    {
  124.       printf ("Syntax is DIR2DR1 SOURCE DEST\n");
  125.       printf ("where SOURCE is the orginal dir file\n");
  126.       printf ("and DEST is the new dir file\n");
  127.       printf ("example CONVERT MLINK.DIR NEW.DR1\n");
  128.       printf ("You do not need to provide the file extensions\n");
  129.  
  130.       return 1;
  131.    }
  132.    
  133.    strcpy (szSource, argv[1]);
  134.    if (!strchr (argv[1], '.'))
  135.       strcat (szSource, ".dir");
  136.  
  137.    strcpy (szDest, argv[2]);
  138.    if (!strchr (argv[2], '.'))
  139.       strcat (szDest, ".dr1");
  140.  
  141.    hDest   = creat (szDest, S_IWRITE);
  142.    hSource = open (szSource, O_RDWR | O_BINARY);
  143.  
  144.    memset (&Dir, '\0', sizeof (DIR));
  145.    memset (&OldDir, '\0', sizeof (OLDDIR));
  146.  
  147.    strcpy (Dir.Terminal.szFont, "Terminal");
  148.    Dir.Terminal.crFore       = 12632256L;
  149.    Dir.Terminal.crBack       = 8388608L;
  150.    Dir.Terminal.iRows        = 25;
  151.    Dir.ZModemOpt.bAutoDown   = 1;
  152.    Dir.ZModemOpt.iSendMgtOpt = 1;
  153.  
  154.    i = sizeof (OLDDIR);
  155.    while (read (hSource, &OldDir, sizeof (OLDDIR)))
  156.    {
  157.         strcpy (Dir.Session.szTitle, OldDir.szDirectoryName);
  158.         Dir.Session.szTitle[TITLE] = 0;
  159.         strcpy (Dir.Session.szPhone, OldDir.szPhoneNumber);
  160.  
  161.         Dir.Session.iProtocol   = OldDir.iTransfer - 470;
  162.  
  163.         Dir.Terminal.iTerminal  = OldDir.iTerminal - 440;
  164.         Dir.Terminal.iBufLines  = OldDir.iMaxSize;
  165.         Dir.Terminal.iCols      = OldDir.iMaxChar;
  166.         Dir.Terminal.bCRLF      = OldDir.iCrLf;
  167.         Dir.Terminal.bEcho      = OldDir.iEcho;
  168.         Dir.Terminal.bColors    = Dir.Terminal.iTerminal ? 0 : 1;
  169.  
  170.         Dir.Port.iComPort   = OldDir.iComPort;
  171.         Dir.Port.iBaudRate  = OldDir.iBaudRate; 
  172.         Dir.Port.iFlowCtl   = OldDir.iFlowCtl;
  173.         Dir.Port.iParity    = OldDir.iParity;
  174.         Dir.Port.iDataBits  = OldDir.iDataBits;
  175.         Dir.Port.iStopBits  = OldDir.iStopBits;
  176.  
  177.         write (hDest, &Dir, sizeof (DIR));
  178.    } 
  179.    close (hDest);
  180.    close (hSource);
  181. }
  182.  
  183.  
  184.  
  185.